package cn.cj.erp.service.system;

import cn.cj.erp.bo.system.SysUserRoleBo;
import cn.cj.erp.entity.system.SysUserRole;
import cn.cj.erp.service.base.BaseService;
import java.util.List;


/**
 * 用户与角色对应关系
 *
 * @author jianchene0
 */
public interface SysUserRoleService extends BaseService<SysUserRole, SysUserRoleBo> {
    /**
     * 保存用户的全部角色
     *
     * @param userId  用户ID
     * @param roleIds 角色ID列表
     * @return true-保存成功，false-保存失败
     */
    boolean saveAllRolesToUser(Long userId, List<Long> roleIds);

    /**
     * 保存角色的多个用户
     * @param roleId 角色ID
     * @param userIds 用户ID列表
     * @return true-保存成功，false-保存失败
     */
    boolean saveUsersToRole(Long roleId, List<Long> userIds);

    /**
     * 根据用户ID，获取角色ID列表
     *
     * @param userId 用户ID
     * @return 角色ID列表
     */
    List<Long> listRoleIdsByUserId(Long userId);

    /**
     * 根据角色ID数组，批量删除
     *
     * @param roleIds 角色ID列表
     * @return true-删除成功，false-删除失败
     */
    boolean removeByRoleIds(List<Long> roleIds);

    /**
     * 根据用户ID删除
     *
     * @param userId 用户ID
     * @return true-删除成功，false-删除失败
     */
    boolean removeByUserId(Long userId);

    /**
     * 删除角色的多个用户
     * @param roleId 角色ID
     * @param userIds 用户ID列表
     * @return true-删除成功，false-删除失败
     */
    boolean removeUsersFromRole(Long roleId, List<Long> userIds);
}
